#include <algorithm>
#include <iostream>
using namespace std;

const int kMaxN = 110;
const int kMod = 998244353;

int QuickPow(int a, int b) {
  int ret = 1;

  for (; b; b >>= 1) {
    if (b & 1) {
      ret = (long long)ret * a % kMod;
    }
    a = (long long)a * a % kMod;
  }
  return ret;
}

void Add(int& a, int b, int c) {
  a = (a + (long long)b * c) % kMod;
}

int f[2][kMaxN][kMaxN];

void Fill(int pos, int n) {
  for (int i = 0; i <= n; i++) {
    for (int j = 0; j <= n; j++) {
      f[pos][i][j] = 0;
    }
  }
}

int Solve(int n, int a, int b, int p, int q) {
  int ans = 0, last = 0, now = 1;
  int invp = QuickPow(p, kMod - 2), invq = QuickPow(q, kMod - 2);

  f[0][a][b] = 1;
  for (int i = 0; i < 2 * n; i++) {
    Fill(now, n);
    for (int j = 0; j < n; j++) {
      for (int k = 0; k < n; k++) {
        if (f[last][j][k] == 0) {
          continue;
        }
        if (last == 0) {
          for (int l = 1; l <= p; l++) {
            Add(f[now][min(j + l, n)][k], f[last][j][k], invp);
          }
        } else {
          for (int l = 1; l <= q; l++) {
            Add(f[now][j][min(k + l, n)], f[last][j][k], invq);
          }
        }
      }
    }
    for (int k = 0; k < n; k++) {
      Add(ans, f[now][n][k], 1);
    }
    swap(last, now);
  }
  return ans;
}

int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int n, a, b, p, q;
  cin >> n >> a >> b >> p >> q;
  cout << Solve(n, a, b, p, q) << "\n";
  return 0;
}